package org.xtremeobjects.anotations.state;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * A method can be annotated as an event,
 * when this method is called an state transition
 * will be fired on the state machine, depending
 * on the @Transitions that where defined for this
 * event. 
 * @author Juan
 *
 */
@Retention(value=RetentionPolicy.RUNTIME)
@Target(value=ElementType.METHOD)
public @interface Event {
	
	/**
	 * One or more @Transitions than this event will
	 * fire, depending on state when method annotated
	 * with @Event was called. 
	 * @return
	 */
	Transition [] value();
}
